printing_function:
; подготовить второй аргумент printf():
	mov	w1, w0
; загрузить адрес строки "f(%d)\n"
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
; здесь просто переход вместо перехода с сохранением адреса и инструкции возврата:
	b	printf
main:
; сохранить FP и LR в локальном стеке:
	stp	x29, x30, [sp, -32]!
; установить стековый фрейм:
	add	x29, sp, 0
; сохранить содержимое регистра X19 в локальном стеке:
	str	x19, [sp,16]
; будем использовать регистр W19 как счетчик.
; установить начальное значение в 2:
	mov	w19, 2
.L3:
; подготовить первый аргумент printing_function():
	mov	w0, w19
; инкремент регистра счетчика.
	add	w19, w19, 1
; W0 все еще содержит значение счетчика перед инкрементом.
	bl	printing_function
; конец?
	cmp	w19, 10
; нет, перейти на начало тела цикла:
	bne	.L3
; возврат 0
	mov	w0, 0
; восстановить содержимое регистра X19:
	ldr	x19, [sp,16]
; восстановить значения FP и LR:
	ldp	x29, x30, [sp], 32
	ret
.LC0:
	.string	"f(%d)\n"
